package visitor;

public interface IRTreeVisitor {

    public Translate.Exp visit(syntaxtree.Block n);

    public Translate.Exp visit(syntaxtree.If n);

    public Translate.Exp visit(syntaxtree.While n);

    public Translate.Exp visit(syntaxtree.VarDecl n);

    public Translate.Exp visit(syntaxtree.MethodDecl n);

    public Translate.Exp visit(syntaxtree.Print n);

    public Translate.Exp visit(syntaxtree.Assign n);

    public Translate.Exp visit(syntaxtree.ArrayAssign n);

    public Translate.Exp visit(syntaxtree.IntArrayType n);

    public Translate.Exp visit(syntaxtree.BooleanType n);

    public Translate.Exp visit(syntaxtree.Program n);

    public Translate.Exp visit(syntaxtree.Formal n);

    public Translate.Exp visit(syntaxtree.IntegerType n);

    public Translate.Exp visit(syntaxtree.IdentifierType n);

    public Translate.Exp visit(syntaxtree.And n);

    public Translate.Exp visit(syntaxtree.LessThan n);

    public Translate.Exp visit(syntaxtree.Plus n);

    public Translate.Exp visit(syntaxtree.Minus n);

    public Translate.Exp visit(syntaxtree.MainClass n);

    public Translate.Exp visit(syntaxtree.ClassDeclSimple n);

    public Translate.Exp visit(syntaxtree.ClassDeclExtends n);

    public Translate.Exp visit(syntaxtree.NewArray n);

    public Translate.Exp visit(syntaxtree.NewObject n);

    public Translate.Exp visit(syntaxtree.Not n);

    public Translate.Exp visit(syntaxtree.Identifier n);

    public Translate.Exp visit(syntaxtree.Times n);

    public Translate.Exp visit(syntaxtree.ArrayLookup n);

    public Translate.Exp visit(syntaxtree.ArrayLength n);

    public Translate.Exp visit(syntaxtree.Call n);

    public Translate.Exp visit(syntaxtree.IntegerLiteral n);

    public Translate.Exp visit(syntaxtree.True n);

    public Translate.Exp visit(syntaxtree.False n);

    public Translate.Exp visit(syntaxtree.IdentifierExp n);

    public Translate.Exp visit(syntaxtree.This n);
    
}
